package com.czk.scala.chapter05

/**
 * map运算的原理
 *
 * @Author:ChenZhangKun
 * @Date: 2021/12/21 17:33
 */
object Test07_Practice_CollectionOperation {
  def main(args: Array[String]): Unit = {
    // Z对数组进行处理，将操作抽象出来，处理完毕之后的结果是一个新的数组
    // 传入数组，第二个是个函数，输入一个int类型，返回一个int类型
    def arrayOperation(array: Array[Int], op: Int => Int): Array[Int] = {
      // 遍历数组，调用op函数
      for (elem <- array) yield op(elem)
    }

    val arr: Array[Int] = Array(1, 2, 3, 4, 5)

    // 加一操作
    def addOne(ele: Int): Int = {
      ele + 1
    }

    // 调用函数

    val newArray: Array[Int] = arrayOperation(arr, addOne)

    println(newArray.mkString(","))
    // 乘以2的函数
    def mul(ele: Int): Int = {
      ele * 2
    }

    println(arrayOperation(arr, mul).mkString(","))
  }
}
